from tortoise.contrib.pydantic import pydantic_model_creator

from modules.domain.dept import SysDept


# Torotise-ORM 提供了 pydantic_model_creator 函数，可以将 ORM 模型转换为 Pydantic 模型。
# 这里将 SysDept 转换为 SysDeptVo，即部门视图对象。
# 这一行代码就完成了 从数据库模型 到  验证模型 的转换。保留了 所有字段定义和类型信息
SysDeptVo = pydantic_model_creator(SysDept,name="SysDeptVo")


# 文档字符串处理
# 转换过程中保留模型的文档字符串和字段注释
# - 类文档字符串会转换为 Pydantic 模型的描述信息
# - 字段注释(以#:开头的注释) 会转换为 对应字段的描述

# 模式验证
#  生成 Pydantic 模型后，就可以查看 JSON Schema 了。
# 输出结果会展示模型的完整结构, 包括字段类型 是否必需, 描述等信息, 这在API 文档生成和前端 对接时非常有用
# print(SysDeptVo.schema_json(indent=4))


# 数据库操作 与 序列化
# 1. 初始化数据库连接
# 2. 创建 数据库记录
# 3. 将 ORM 对象 转换为 Pydantic 对象
# 4. 序列化 Pydantic 对象为 JSON 格式

# 创建对象
# sysDept = await SysDept.create(name="测试部门", parent_id=1, order_num=1, leader="测试负责人")

# 转换为 Pydantic 对象
# sysDeptVo = SysDeptVo.from_tortoise_orm(sysDept)

# 序列化选项
# Pydantic 提供了两种 常用的序列化方法
# print(s())

